home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
021-030
/
amok22
/
muchmore_1.8
/
src
/
getfontdata.asm
< prev
next >
Wrap
Assembly Source File
|
1993-11-04
|
4KB
|
176 lines
;(*---------------------------------------------------------------------------
; :Program. GetFontData.asm
; :Author. Fridtjof Siebert
; :Address. Nobileweg 67, D-7000-Stuttgart-40
; :Phone. (0)711/822509
; :Shortcut. [fbs]
; :Version. 1.0
; :Copyright. PD
; :Language. 68000 Assembler
; :Contents. Procedures used by MuchMore to get Fonts
;---------------------------------------------------------------------------*)
; GetFontData
; A0: Pointer to font's chardata
; A1: Pointer to fontdata-Array
ch EQUR A0;
fd EQUR A1;
ad EQUR A2;
j EQUR D0;
x EQUR D1;
c EQUR D2;
d EQUR D3;
e EQUR D4;
x1 EQUR D5;
x2 EQUR D6;
x3 EQUR D7;
GetFontData:
move #191,j;
jloop: move j,x;
asl #3,x;
move x,x1;
move x,x2;
move x,x3;
add #$600,x1;
add #$c00,x2;
add #$1200,x3;
lea (ch,j),ad;
; Byte 0:
move.b (ad),c;
move.b c,0(fd,x);
move.b c,d;
lsr.b #2,d;
bcc \1;
bset #0,d;
\1: move.b d,0(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,0(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,0(fd,x3);
; Byte 1:
adda.w #$c0,ad
move.b (ad),c;
move.b c,1(fd,x);
move.b c,d;
lsr.b #2,d;
bcc \2;
bset #0,d;
\2: move.b d,1(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,1(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,1(fd,x3);
; Byte 2:
adda.w #$c0,ad
move.b (ad),c;
move.b c,2(fd,x);
move.b c,d;
lsr.b #1,d;
bcc \3;
bset #0,d;
\3: move.b d,2(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,2(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,2(fd,x3);
; Byte 3:
adda.w #$c0,ad
move.b (ad),c;
move.b c,3(fd,x);
move.b c,d;
lsr.b #1,d;
bcc \4;
bset #0,d;
\4: move.b d,3(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,3(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,3(fd,x3);
; Byte 4:
adda.w #$c0,ad
move.b (ad),c;
move.b c,4(fd,x);
move.b c,4(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,4(fd,x2);
move.b e,4(fd,x3);
; Byte 5:
adda.w #$c0,ad
move.b (ad),c;
move.b c,5(fd,x);
move.b c,5(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,5(fd,x2);
move.b e,5(fd,x3);
; Byte 6:
adda.w #$c0,ad
move.b (ad),c;
move.b c,6(fd,x);
move.b c,d;
lsl.b #1,d;
bcc \7;
bset #7,d;
\7: move.b d,6(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,6(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,6(fd,x3);
; Byte 7:
adda.w #$c0,ad
move.b (ad),c;
move.b c,7(fd,x);
move.b c,d;
lsl.b #1,d;
bcc \8;
bset #7,d;
\8: move.b d,7(fd,x1);
move.b c,e;
lsr.b #1,e;
or.b c,e;
move.b e,7(fd,x2);
move.b d,e;
lsr.b #1,e;
or.b d,e;
move.b e,7(fd,x3);
dbra j,jloop;
move.l fd,ad;
adda.w #$1800,ad;
move #$5ff,j;
invers: move.l (fd)+,c;
not.l c;
move.l c,(ad)+;
dbra j,invers;
end;